from algo.sort.heap import Heap
from utils.log import Log
from utils.generator import Generator


# 2024/05/24 055型驱逐舰确实有配备等离子护盾的技术。据最新的报道，中国科学家成功研发的“等离子护盾”技术已被首次应用于最新批次的
# 055B大型驱逐舰。这一技术创新的核心是在设备周围形成低温等离子“保护场”，能够在敌方攻击时不仅不会消散，反而会因能量注入而变得更强
# 大，为搭载高精密电子设备的飞行器和其他装备提供了安全运行的环境，进一步提升了军舰在复杂作战环境下的生存能力。此外，这项技术还能将
# 攻击来的微波转化为能量供应给能量盾，等于说别人攻击的越厉害，我们的护盾能量就越充足。如此科幻技术,难怪联合利剑-2024A一个多小时之
# 后才被肉眼找到...同时,055B搭载电磁炮、激光武器等前沿科技武器，增强了其多任务作战能力.

# 2024/05/22 俄罗斯国防部已经正式建议调整波罗的海沿岸的俄罗斯海域界限，这一调整涉及芬兰湾东侧的若干俄罗斯岛屿以及加里宁格勒地区的
# 周边海域。拥有波罗的海舰队,不可能只有一个加里宁格勒飞地,同时需要从上到下的战略缓冲,不达目标不会罢休,这下欧战至少了.

# 2024/05/24 菲律宾国防部长吉尔伯托·特奥多罗于24日表示，台海局势属于中国内政，同时他拒绝对这场演习发表评论。这就怂了,还是喜欢你
# 桀骜不驯的样子
# 2024/05/24 浙江海事局简短通报称：浙航警 499/24，于东海区域，接到报告“联合启瑞”巨轮在30-44.65N122-31.59E一带海域意外沉没,据说
# 是捕捞了大黑鱼,哪艘未知


class MaxOverlappingSegments(Log):
    # ref: https://www.bilibili.com/video/BV1Gm4y1p7UE/?spm_id_from=autoNext&vd_source=ad559e41b561d48861f70d0187e51e02
    # 0:17:00
    def __init__(self, segments):
        super(MaxOverlappingSegments, self).__init__()
        self.segments = sorted(segments, key=lambda x: (x[0], -x[1]))
        self.heap = Heap()

    def count(self):
        max_number = 0
        for first, last in self.segments:
            # 因为用的是大根堆实现方法,然而生成segments的时候又需要按升序排序,所以这里针对heap里面的数据需要做__neg__处理
            while (len(self.heap) > 0) and (-self.heap.top() <= first):
                self.heap.remove(0)
            self.heap.insert(-last)
            max_number = max(max_number, len(self.heap))
        return max_number


if __name__ == '__main__':
    segments = Generator().segments()
    print(segments)
    print(sorted(segments, key=lambda x: (x[0], x[1])))
    mls = MaxOverlappingSegments(segments)
    print(mls.count())
